! function(e, n) {
	"function" == typeof define && (define.amd || define.cmd) ? define(function() {
		return n(e)
	}) : n(e, !0)
}(this, function(r, e) {
	var a, c, n, i, t, o, s, d, l, u, p, f, m, g, h, S, y, I, v, _, w, T;
	if (!r.jWeixin) return a = {
			config: "preVerifyJSAPI",
			onMenuShareTimeline: "menu:share:timeline",
			onMenuShareAppMessage: "menu:share:appmessage",
			onMenuShareQQ: "menu:share:qq",
			onMenuShareWeibo: "menu:share:weiboApp",
			onMenuShareQZone: "menu:share:QZone",
			previewImage: "imagePreview",
			getLocation: "geoLocation",
			openProductSpecificView: "openProductViewWithPid",
			addCard: "batchAddCard",
			openCard: "batchViewCard",
			chooseWXPay: "getBrandWCPayRequest",
			openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
			startSearchBeacons: "startMonitoringBeacons",
			stopSearchBeacons: "stopMonitoringBeacons",
			onSearchBeacons: "onBeaconsInRange",
			consumeAndShareCard: "consumedShareCard",
			openAddress: "editAddress"
		}, c = function() {
			var e, n = {};
			for (e in a) n[a[e]] = e;
			return n
		}(), n = r.document, i = n.title, t = navigator.userAgent.toLowerCase(), f = navigator.platform
		.toLowerCase(), o = !(!f.match("mac") && !f.match("win")), s = -1 != t.indexOf("wxdebugger"), d = -1 !=
		t.indexOf("micromessenger"), l = -1 != t.indexOf("android"), u = -1 != t.indexOf("iphone") || -1 != t
		.indexOf("ipad"), p = (f = t.match(/micromessenger\/(\d+\.\d+\.\d+)/) || t.match(
			/micromessenger\/(\d+\.\d+)/)) ? f[1] : "", m = {
			initStartTime: L(),
			initEndTime: 0,
			preVerifyStartTime: 0,
			preVerifyEndTime: 0
		}, g = {
			version: 1,
			appId: "",
			initTime: 0,
			preVerifyTime: 0,
			networkType: "",
			isPreVerifyOk: 1,
			systemType: u ? 1 : l ? 2 : -1,
			clientVersion: p,
			url: encodeURIComponent(location.href)
		}, h = {}, S = {
			_completes: []
		}, y = {
			state: 0,
			data: {}
		}, O(function() {
			m.initEndTime = L()
		}), I = !1, v = [], _ = {
			config: function(e) {
				C("config", h = e);
				var o = !1 !== h.check;
				O(function() {
					if (o) k(a.config, {
						verifyJsApiList: A(h.jsApiList),
						verifyOpenTagList: A(h.openTagList)
					}, (S._complete = function(e) {
						m.preVerifyEndTime = L(), y.state = 1, y.data = e
					}, S.success = function(e) {
						g.isPreVerifyOk = 0
					}, S.fail = function(e) {
						S._fail ? S._fail(e) : y.state = -1
					}, (t = S._completes).push(function() {
						B()
					}), S.complete = function(e) {
						for (var n = 0, i = t.length; n < i; ++n) t[n]();
						S._completes = []
					}, S)), m.preVerifyStartTime = L();
					else {
						y.state = 1;
						for (var e = S._completes, n = 0, i = e.length; n < i; ++n) e[n]();
						S._completes = []
					}
					var t
				}), _.invoke || (_.invoke = function(e, n, i) {
					r.WeixinJSBridge && WeixinJSBridge.invoke(e, P(n), i)
				}, _.on = function(e, n) {
					r.WeixinJSBridge && WeixinJSBridge.on(e, n)
				})
			},
			ready: function(e) {
				(0 != y.state || (S._completes.push(e), !d && h.debug)) && e()
			},
			error: function(e) {
				p < "6.0.2" || (-1 == y.state ? e(y.data) : S._fail = e)
			},
			checkJsApi: function(e) {
				k("checkJsApi", {
					jsApiList: A(e.jsApiList)
				}, (e._complete = function(e) {
					l && (i = e.checkResult) && (e.checkResult = JSON.parse(i));
					var n, i = e,
						t = i.checkResult;
					for (n in t) {
						var o = c[n];
						o && (t[o] = t[n], delete t[n])
					}
				}, e))
			},
			onMenuShareTimeline: function(e) {
				M(a.onMenuShareTimeline, {
					complete: function() {
						k("shareTimeline", {
							title: e.title || i,
							desc: e.title || i,
							img_url: e.imgUrl || "",
							link: e.link || location.href,
							type: e.type || "link",
							data_url: e.dataUrl || ""
						}, e)
					}
				}, e)
			},
			onMenuShareAppMessage: function(n) {
				M(a.onMenuShareAppMessage, {
					complete: function(e) {
						"favorite" === e.scene ? k("sendAppMessage", {
							title: n.title || i,
							desc: n.desc || "",
							link: n.link || location.href,
							img_url: n.imgUrl || "",
							type: n.type || "link",
							data_url: n.dataUrl || ""
						}) : k("sendAppMessage", {
							title: n.title || i,
							desc: n.desc || "",
							link: n.link || location.href,
							img_url: n.imgUrl || "",
							type: n.type || "link",
							data_url: n.dataUrl || ""
						}, n)
					}
				}, n)
			},
			onMenuShareQQ: function(e) {
				M(a.onMenuShareQQ, {
					complete: function() {
						k("shareQQ", {
							title: e.title || i,
							desc: e.desc || "",
							img_url: e.imgUrl || "",
							link: e.link || location.href
						}, e)
					}
				}, e)
			},
			onMenuShareWeibo: function(e) {
				M(a.onMenuShareWeibo, {
					complete: function() {
						k("shareWeiboApp", {
							title: e.title || i,
							desc: e.desc || "",
							img_url: e.imgUrl || "",
							link: e.link || location.href
						}, e)
					}
				}, e)
			},
			onMenuShareQZone: function(e) {
				M(a.onMenuShareQZone, {
					complete: function() {
						k("shareQZone", {
							title: e.title || i,
							desc: e.desc || "",
							img_url: e.imgUrl || "",
							link: e.link || location.href
						}, e)
					}
				}, e)
			},
			updateTimelineShareData: function(e) {
				k("updateTimelineShareData", {
					title: e.title,
					link: e.link,
					imgUrl: e.imgUrl
				}, e)
			},
			updateAppMessageShareData: function(e) {
				k("updateAppMessageShareData", {
					title: e.title,
					desc: e.desc,
					link: e.link,
					imgUrl: e.imgUrl
				}, e)
			},
			startRecord: function(e) {
				k("startRecord", {}, e)
			},
			stopRecord: function(e) {
				k("stopRecord", {}, e)
			},
			onVoiceRecordEnd: function(e) {
				M("onVoiceRecordEnd", e)
			},
			playVoice: function(e) {
				k("playVoice", {
					localId: e.localId
				}, e)
			},
			pauseVoice: function(e) {
				k("pauseVoice", {
					localId: e.localId
				}, e)
			},
			stopVoice: function(e) {
				k("stopVoice", {
					localId: e.localId
				}, e)
			},
			onVoicePlayEnd: function(e) {
				M("onVoicePlayEnd", e)
			},
			uploadVoice: function(e) {
				k("uploadVoice", {
					localId: e.localId,
					isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
				}, e)
			},
			downloadVoice: function(e) {
				k("downloadVoice", {
					serverId: e.serverId,
					isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
				}, e)
			},
			translateVoice: function(e) {
				k("translateVoice", {
					localId: e.localId,
					isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
				}, e)
			},
			chooseImage: function(e) {
				k("chooseImage", {
					scene: "1|2",
					count: e.count || 9,
					sizeType: e.sizeType || ["original", "compressed"],
					sourceType: e.sourceType || ["album", "camera"]
				}, (e._complete = function(e) {
					if (l) {
						var n = e.localIds;
						try {
							n && (e.localIds = JSON.parse(n))
						} catch (e) {}
					}
				}, e))
			},
			getLocation: function(e) {
				e = e || {}, k(a.getLocation, {
					type: e.type || "wgs84"
				}, (e._complete = function(e) {
					delete e.type
				}, e))
			},
			previewImage: function(e) {
				k(a.previewImage, {
					current: e.current,
					urls: e.urls
				}, e)
			},
			uploadImage: function(e) {
				k("uploadImage", {
					localId: e.localId,
					isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
				}, e)
			},
			downloadImage: function(e) {
				k("downloadImage", {
					serverId: e.serverId,
					isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
				}, e)
			},
			getLocalImgData: function(e) {
				!1 === I ? (I = !0, k("getLocalImgData", {
					localId: e.localId
				}, (e._complete = function(e) {
					var n;
					I = !1, 0 < v.length && (n = v.shift(), wx.getLocalImgData(n))
				}, e))) : v.push(e)
			},
			getNetworkType: function(e) {
				k("getNetworkType", {}, (e._complete = function(e) {
					var n = e,
						e = n.errMsg,
						i = (n.errMsg = "getNetworkType:ok", n.subtype);
					if (delete n.subtype, i) n.networkType = i;
					else {
						var i = e.indexOf(":"),
							t = e.substring(i + 1);
						switch (t) {
							case "wifi":
							case "edge":
							case "wwan":
								n.networkType = t;
								break;
							default:
								n.errMsg = "getNetworkType:fail"
						}
					}
				}, e))
			},
			openLocation: function(e) {
				k("openLocation", {
					latitude: e.latitude,
					longitude: e.longitude,
					name: e.name || "",
					address: e.address || "",
					scale: e.scale || 28,
					infoUrl: e.infoUrl || ""
				}, e)
			},
			hideOptionMenu: function(e) {
				k("hideOptionMenu", {}, e)
			},
			showOptionMenu: function(e) {
				k("showOptionMenu", {}, e)
			},
			closeWindow: function(e) {
				k("closeWindow", {}, e = e || {})
			},
			hideMenuItems: function(e) {
				k("hideMenuItems", {
					menuList: e.menuList
				}, e)
			},
			showMenuItems: function(e) {
				k("showMenuItems", {
					menuList: e.menuList
				}, e)
			},
			hideAllNonBaseMenuItem: function(e) {
				k("hideAllNonBaseMenuItem", {}, e)
			},
			showAllNonBaseMenuItem: function(e) {
				k("showAllNonBaseMenuItem", {}, e)
			},
			scanQRCode: function(e) {
				k("scanQRCode", {
					needResult: (e = e || {}).needResult || 0,
					scanType: e.scanType || ["qrCode", "barCode"]
				}, (e._complete = function(e) {
					var n;
					u && (n = e.resultStr) && (n = JSON.parse(n), e.resultStr = n && n
						.scan_code && n.scan_code.scan_result)
				}, e))
			},
			openAddress: function(e) {
				k(a.openAddress, {}, (e._complete = function(e) {
					(e = e).postalCode = e.addressPostalCode, delete e.addressPostalCode, e
						.provinceName = e.proviceFirstStageName, delete e.proviceFirstStageName,
						e.cityName = e.addressCitySecondStageName, delete e
						.addressCitySecondStageName, e.countryName = e
						.addressCountiesThirdStageName, delete e.addressCountiesThirdStageName,
						e.detailInfo = e.addressDetailInfo, delete e.addressDetailInfo
				}, e))
			},
			openProductSpecificView: function(e) {
				k(a.openProductSpecificView, {
					pid: e.productId,
					view_type: e.viewType || 0,
					ext_info: e.extInfo
				}, e)
			},
			addCard: function(e) {
				for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
					var r = n[t],
						r = {
							card_id: r.cardId,
							card_ext: r.cardExt
						};
					i.push(r)
				}
				k(a.addCard, {
					card_list: i
				}, (e._complete = function(e) {
					if (n = e.card_list) {
						for (var n, i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
							var o = n[i];
							o.cardId = o.card_id, o.cardExt = o.card_ext, o.isSuccess = !!o
								.is_succ, delete o.card_id, delete o.card_ext, delete o.is_succ
						}
						e.cardList = n, delete e.card_list
					}
				}, e))
			},
			chooseCard: function(e) {
				k("chooseCard", {
					app_id: h.appId,
					location_id: e.shopId || "",
					sign_type: e.signType || "SHA1",
					card_id: e.cardId || "",
					card_type: e.cardType || "",
					card_sign: e.cardSign,
					time_stamp: e.timestamp + "",
					nonce_str: e.nonceStr
				}, (e._complete = function(e) {
					e.cardList = e.choose_card_info, delete e.choose_card_info
				}, e))
			},
			openCard: function(e) {
				for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
					var r = n[t],
						r = {
							card_id: r.cardId,
							code: r.code
						};
					i.push(r)
				}
				k(a.openCard, {
					card_list: i
				}, e)
			},
			consumeAndShareCard: function(e) {
				k(a.consumeAndShareCard, {
					consumedCardId: e.cardId,
					consumedCode: e.code
				}, e)
			},
			chooseWXPay: function(e) {
				k(a.chooseWXPay, x(e), e), B({
					jsApiName: "chooseWXPay"
				})
			},
			openEnterpriseRedPacket: function(e) {
				k(a.openEnterpriseRedPacket, x(e), e)
			},
			startSearchBeacons: function(e) {
				k(a.startSearchBeacons, {
					ticket: e.ticket
				}, e)
			},
			stopSearchBeacons: function(e) {
				k(a.stopSearchBeacons, {}, e)
			},
			onSearchBeacons: function(e) {
				M(a.onSearchBeacons, e)
			},
			openEnterpriseChat: function(e) {
				k("openEnterpriseChat", {
					useridlist: e.userIds,
					chatname: e.groupName
				}, e)
			},
			launchMiniProgram: function(e) {
				k("launchMiniProgram", {
					targetAppId: e.targetAppId,
					path: function(e) {
						var n;
						if ("string" == typeof e && 0 < e.length) return n = e.split("?")[0],
							n += ".html", void 0 !== (e = e.split("?")[1]) ? n + "?" + e : n
					}(e.path),
					envVersion: e.envVersion
				}, e)
			},
			openBusinessView: function(e) {
				k("openBusinessView", {
					businessType: e.businessType,
					queryString: e.queryString || "",
					envVersion: e.envVersion
				}, (e._complete = function(n) {
					if (l) {
						var e = n.extraData;
						if (e) try {
							n.extraData = JSON.parse(e)
						} catch (e) {
							n.extraData = {}
						}
					}
				}, e))
			},
			miniProgram: {
				navigateBack: function(e) {
					e = e || {}, O(function() {
						k("invokeMiniProgramAPI", {
							name: "navigateBack",
							arg: {
								delta: e.delta || 1
							}
						}, e)
					})
				},
				navigateTo: function(e) {
					O(function() {
						k("invokeMiniProgramAPI", {
							name: "navigateTo",
							arg: {
								url: e.url
							}
						}, e)
					})
				},
				redirectTo: function(e) {
					O(function() {
						k("invokeMiniProgramAPI", {
							name: "redirectTo",
							arg: {
								url: e.url
							}
						}, e)
					})
				},
				switchTab: function(e) {
					O(function() {
						k("invokeMiniProgramAPI", {
							name: "switchTab",
							arg: {
								url: e.url
							}
						}, e)
					})
				},
				reLaunch: function(e) {
					O(function() {
						k("invokeMiniProgramAPI", {
							name: "reLaunch",
							arg: {
								url: e.url
							}
						}, e)
					})
				},
				postMessage: function(e) {
					O(function() {
						k("invokeMiniProgramAPI", {
							name: "postMessage",
							arg: e.data || {}
						}, e)
					})
				},
				getEnv: function(e) {
					O(function() {
						e({
							miniprogram: "miniprogram" === r.__wxjs_environment
						})
					})
				}
			}
		}, w = 1, T = {}, n.addEventListener("error", function(e) {
			var n, i, t;
			l || (t = (n = e.target).tagName, i = n.src, "IMG" != t && "VIDEO" != t && "AUDIO" != t &&
				"SOURCE" != t) || -1 != i.indexOf("wxlocalresource://") && (e.preventDefault(), e
				.stopPropagation(), (t = n["wx-id"]) || (t = w++, n["wx-id"] = t), T[t] || (T[t] = !0,
					wx.ready(function() {
						wx.getLocalImgData({
							localId: i,
							success: function(e) {
								n.src = e.localData
							}
						})
					})))
		}, !0), n.addEventListener("load", function(e) {
			var n;
			l || (n = (e = e.target).tagName, e.src, "IMG" != n && "VIDEO" != n && "AUDIO" != n &&
				"SOURCE" != n) || (n = e["wx-id"]) && (T[n] = !1)
		}, !0), e && (r.wx = r.jWeixin = _), _;

	function k(n, e, i) {
		r.WeixinJSBridge ? WeixinJSBridge.invoke(n, P(e), function(e) {
			V(n, e, i)
		}) : C(n, i)
	}

	function M(n, i, t) {
		r.WeixinJSBridge ? WeixinJSBridge.on(n, function(e) {
			t && t.trigger && t.trigger(e), V(n, e, i)
		}) : C(n, t || i)
	}

	function P(e) {
		return (e = e || {}).appId = h.appId, e.verifyAppId = h.appId, e.verifySignType = "sha1", e
			.verifyTimestamp = h.timestamp + "", e.verifyNonceStr = h.nonceStr, e.verifySignature = h.signature, e
	}

	function x(e) {
		return {
			timeStamp: e.timestamp + "",
			nonceStr: e.nonceStr,
			package: e.package,
			paySign: e.paySign,
			signType: e.signType || "SHA1"
		}
	}

	function V(e, n, i) {
		"openEnterpriseChat" != e && "openBusinessView" !== e || (n.errCode = n.err_code), delete n.err_code,
			delete n.err_desc, delete n.err_detail;
		var t = n.errMsg,
			e = (t || (t = n.err_msg, delete n.err_msg, t = function(e, n) {
					var i = c[e];
					i && (e = i);
					i = "ok"; {
						var t;
						n && (t = n.indexOf(":"), "access denied" != (i = (i = (i = -1 != (i = -1 != (i =
								"failed" == (i = "confirm" == (i = n.substring(t + 1)) ?
									"ok" : i) ? "fail" : i).indexOf("failed_") ? i
							.substring(7) : i).indexOf("fail_") ? i.substring(5) : i).replace(
							/_/g, " ")).toLowerCase()) && "no permission to execute" != i || (i =
							"permission denied"), "" == (i = "config" == e && "function not exist" ==
							i ? "ok" : i)) && (i = "fail")
					}
					return n = e + ":" + i
				}(e, t), n.errMsg = t), (i = i || {})._complete && (i._complete(n), delete i._complete), t = n
				.errMsg || "", h.debug && !i.isInnerInvoke && alert(JSON.stringify(n)), t.indexOf(":"));
		switch (t.substring(e + 1)) {
			case "ok":
				i.success && i.success(n);
				break;
			case "cancel":
				i.cancel && i.cancel(n);
				break;
			default:
				i.fail && i.fail(n)
		}
		i.complete && i.complete(n)
	}

	function A(e) {
		if (e) {
			for (var n = 0, i = e.length; n < i; ++n) {
				var t = e[n],
					t = a[t];
				t && (e[n] = t)
			}
			return e
		}
	}

	function C(e, n) {
		var i;
		!h.debug || n && n.isInnerInvoke || ((i = c[e]) && (e = i), n && n._complete && delete n._complete, console
			.log('"' + e + '",', n || ""))
	}

	function B(n) {
		var i;
		o || s || h.debug || p < "6.0.2" || g.systemType < 0 || (i = new Image, g.appId = h.appId, g.initTime = m
			.initEndTime - m.initStartTime, g.preVerifyTime = m.preVerifyEndTime - m.preVerifyStartTime, _
			.getNetworkType({
				isInnerInvoke: !0,
				success: function(e) {
					g.networkType = e.networkType;
					e = "https://open.weixin.qq.com/sdk/report?v=" + g.version + "&o=" + g
						.isPreVerifyOk + "&s=" + g.systemType + "&c=" + g.clientVersion + "&a=" + g
						.appId + "&n=" + g.networkType + "&i=" + g.initTime + "&p=" + g.preVerifyTime +
						"&u=" + g.url + "&jsapi_name=" + (n ? n.jsApiName : "");
					i.src = e
				}
			}))
	}

	function L() {
		return (new Date).getTime()
	}

	function O(e) {
		d && (r.WeixinJSBridge ? e() : n.addEventListener && n.addEventListener("WeixinJSBridgeReady", e, !1))
	}
});